package articles

import "blog/app/model"

type name struct {
}

func (n *name) TableName() string {
	return "p_article"
}

type Article struct {
	name
	ID         int    `gorm:"column:id;comment:主键;primaryKey;autoIncrement"`
	Title      string `gorm:"column:title;comment:文章标题" validate:"required" json:"title"`
	SubTitle   string `gorm:"column:subtitle;comment:文章副标题"`
	Type       int    `gorm:"column:type;comment:文章类型0图文类型1文章类型2相册类型;default:0" json:"type"`
	Cid        int    `gorm:"column:cat_id;comment:文章分类ID" json:"cid" validate:"required,ArticleCatExists"`
	Tid        string `gorm:"column:tag_id;comment:文章标签ID" json:"tid" validate:"required,ArticleTagExists"`
	IsPublish  int    `gorm:"column:is_publish;comment:是否发布文章0否1是;default:0" `
	Pwd        int    `gorm:"column:is_pwd;comment:是否设置密码0否1是;default:0" `
	Password   string `gorm:"column:password;comment:密码" validate:"required_if=Pwd 1" `
	MainImg    string `gorm:"column:main_img;comment:文章主图" validate:"required_if=Type 0" `
	IsComment  int    `gorm:"column:is_comment"`
	IsOriginal int    `gorm:"column:is_original;default:1"`
	Desc       string `gorm:"desc"`
	model.SoftModel
}

type ArticleList struct {
	ID       int       `json:"id"`
	Title    string    `json:"title"`
	SubTitle string    `gorm:"column:subtitle" json:"subtitle"`
	Cid      int       `gorm:"column:cat_id" json:"-"`
	Tid      string    `gorm:"column:tag_id" json:"-"`
	Cate     *string   `gorm:"-" json:"cate_name"`
	MainImg  string    `gorm:"column:main_img" json:"main_img"`
	Tag      *[]string `gorm:"-" json:"tag"`
	Desc     string    `gorm:"desc" json:"desc"`
	model.SoftModel
}

type ArticleInfo struct {
	ID         int    `json:"id"`
	Title      string `json:"title"`
	SubTitle   string `gorm:"column:subtitle" json:"subtitle"`
	MainImg    string `gorm:"column:main_img" json:"main_img"`
	Cid        int    `gorm:"column:cat_id" json:"-"`
	Tid        string `gorm:"column:tag_id" json:"-"`
	IsPublish  int    `gorm:"column:is_publish" json:"is_publish"`
	Type       int    `gorm:"column:type" json:"type"`
	IsComment  int    `gorm:"column:is_comment" json:"is_comment"`
	IsOriginal int    `gorm:"column:is_original" json:"is_original"`
	Cate       *Cate  `gorm:"-" json:"cate"`
	Tag        *[]Tag `gorm:"-" json:"tag"`
	Content    string `gorm:"-" json:"content"`
	Desc       string `gorm:"desc" json:"desc"`
}
